<?php
{
    /**
     * Class Autoloader 自动加载
     */
    class Autoloader
    {

        #region 自动加载 autoload
        /**
         * 自动加载
         * @param string $class 类名称
         * @return bool 加载是否成功
         */
        public static function autoload($class)
        {
            //$msg = "自动加载一次类：" . $class . "<br />\r\n";
            //file_put_contents("logs.txt",$msg, FILE_APPEND);
            $class = ltrim($class, '\\'); //如果有的话,去除类最左侧的\
            $class_name = str_replace('\\', '/', $class); // 类名称
            $class_dir = ""; // 文件所在目录
            $extesion = ".php"; // 扩展名

            //echo "类名称" . $class_name . "<br />";

            if (in_array($class_name, array("LogHelper", "Comm")))
            {   // 公共
                $class_dir = APP_PATH . "Comm/";
            }
            else if (strpos($class_name, "Controller") !== false)
            {   // Controller
                $router = $GLOBALS["globleRouter"]; // 路由信息
                $area = $router["area"];
                if ($area != "")
                {
                    $area = "Areas/" . $area . "/";
                }
                $class_dir = APP_PATH . $area . "Controller/";
                $class_name = $router["controller"] . "Controller";
            }
            else if (strpos($class_name, "Exception") !== false)
            {   // Exception
                $class_dir = CORE_PATH . "Exception/";
            }
            else
            {   // Models
                $class_dir = APP_PATH . "Models/";
            }
            return self ::IncludeFile($class_dir, $class_name, $extesion);
        }
        #endregion

        #region 加载指定文件 IncludeFile
        /**
         * 加载指定文件
         * @param string $class_dir 类所在目录
         * @param string $class_name 类名称
         * @param string $extension 文件扩展名
         * @return bool 加载是否成功
         */
        private static function IncludeFile($class_dir, $class_name, $extension = ".php")
        {

            $path = $class_dir . $class_name . $extension; // 完整路径

            //ile_put_contents("logs.txt", $path . "\r\n", FILE_APPEND);

            // 文件是否存在
            if (file_exists($path))
            {
                require_once($path);
                return true;
            }
            else
            {
                //echo '内部错误，加载文件路径不存在：' . $path . '<br />';
                //exit;
                return false;
            }
        }
        #endregion
    }
}
?>